package condominio.negocio;

import java.util.Collection;

import condominio.DAO.ResidenteDAO;
import condominio.modelo.Residente;
import condominio.excepcion.DAOExcepcion;

public class GestionResidentes {
	
	public Collection<Residente> buscarPorNombre(String nombre)
			throws DAOExcepcion {
		ResidenteDAO dao = new ResidenteDAO();
		return dao.buscarPorNombre(nombre);

	}
	
	public Collection<Residente> buscarPorDocumento(byte tipodocumento,
													String documentoidentidad)throws DAOExcepcion {
		ResidenteDAO dao = new ResidenteDAO();
		return dao.buscarPorDocumento(tipodocumento, documentoidentidad);

	}
	
	public void insertar(byte tipodocumento, 
							  String documentoidentidad, 
							  String correo, 
							  String password, 
							  String nombre, 
							  String apellidopaterno, 
							  String apellidomaterno, 
							  java.sql.Date fechanacimiento) throws DAOExcepcion {
		
		try {
			ResidenteDAO dao = new ResidenteDAO();
			Residente vo = new Residente();
			int zeroesNeeded = 10 - documentoidentidad.length();
			String codigoresidente = documentoidentidad;
			String nombrecompleto = nombre + " " + apellidopaterno + " " + apellidomaterno;
			while(zeroesNeeded > 0)
			{
				codigoresidente = "0" + codigoresidente;
				zeroesNeeded--;
			}
			codigoresidente = tipodocumento + codigoresidente;
			vo.setCodigoresidente(codigoresidente);
			vo.setTipodocumento(tipodocumento);
			vo.setDocumentoidentidad(documentoidentidad);
			vo.setNombre(nombre);
			vo.setApellidoMaterno(apellidomaterno);
			vo.setApellidoPaterno(apellidopaterno);
			vo.setNombrecompleto(nombrecompleto);
			vo.setCorreo(correo);			
			vo.setPassword(password);
			vo.setFechaNacimiento(fechanacimiento);
			dao.insertar(vo);
		} 
		catch (DAOExcepcion e) {			
			int pos = 0;
			
			if (e.getMessage().indexOf("Correo_UNIQUE") > pos) {
				throw new DAOExcepcion("ER001 - El correo " + correo + " ya existe en nuestra base de datos");
			}
			else if(e.getMessage().indexOf("PRIMARY") > pos){
				if (tipodocumento==1){
					throw new DAOExcepcion("ER002 - El DNI " + documentoidentidad + " ya existe en nuestra base de datos");	
				}
				else if(tipodocumento==2){
					throw new DAOExcepcion("ER002 - El CE " + documentoidentidad + " ya existe en nuestra base de datos");
				}
				else {
					throw new DAOExcepcion("ER002 - El Pasaporte " + documentoidentidad + " ya existe en nuestra base de datos");
				}
			}
		}
 
	}
	
	public Residente obtener(String codigoresidente) throws DAOExcepcion {
		ResidenteDAO dao = new ResidenteDAO();
		return dao.obtener(codigoresidente);
	}
	
	public void eliminar(String dni) throws DAOExcepcion {
		ResidenteDAO dao = new ResidenteDAO();
		dao.eliminar(dni);
	}
	
	public void actualizar(String codigoresidente, String correo, String password, String nombre, String apellidopaterno, String apellidomaterno, java.sql.Date fechanacimiento) throws DAOExcepcion {
		try {
			ResidenteDAO dao = new ResidenteDAO();
			Residente vo = new Residente();
			String nombrecompleto = nombre + " " + apellidopaterno + " " + apellidomaterno;
			vo.setCodigoresidente(codigoresidente);
			vo.setNombre(nombre);
			vo.setApellidoMaterno(apellidomaterno);
			vo.setApellidoPaterno(apellidopaterno);
			vo.setNombrecompleto(nombrecompleto);
			vo.setCorreo(correo);
			vo.setPassword(password);
			vo.setFechaNacimiento(fechanacimiento);
			dao.actualizar(vo);	
		}		
		catch (DAOExcepcion e) {
			int pos = 0;
			
			if (e.getMessage().indexOf("Correo_UNIQUE") > pos) {
				throw new DAOExcepcion("ER001 - El correo " + correo + " ya existe en nuestra base de datos");
			}
		}	
		
	}
	
	public Collection<Residente> listar() throws DAOExcepcion {
		ResidenteDAO dao = new ResidenteDAO();

		return dao.listar();
	}
	
}
